↳ Prolog
↳ PrologToPiTRSProof
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
DIV_IN(X, s(Y), Z) → U11(X, Y, Z, div_s_in(X, Y, Z))
DIV_IN(X, s(Y), Z) → DIV_S_IN(X, Y, Z)
DIV_S_IN(s(X), Y, s(Z)) → U31(X, Y, Z, sub_in(X, Y, R))
DIV_S_IN(s(X), Y, s(Z)) → SUB_IN(X, Y, R)
SUB_IN(s(X), s(Y), Z) → U61(X, Y, Z, sub_in(X, Y, Z))
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
U31(X, Y, Z, sub_out(X, Y, R)) → U41(X, Y, Z, div_s_in(R, Y, Z))
U31(X, Y, Z, sub_out(X, Y, R)) → DIV_S_IN(R, Y, Z)
DIV_S_IN(s(X), Y, 0) → U21(X, Y, lss_in(X, Y))
DIV_S_IN(s(X), Y, 0) → LSS_IN(X, Y)
LSS_IN(s(X), s(Y)) → U51(X, Y, lss_in(X, Y))
LSS_IN(s(X), s(Y)) → LSS_IN(X, Y)
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
DIV_IN(X, s(Y), Z) → U11(X, Y, Z, div_s_in(X, Y, Z))
DIV_IN(X, s(Y), Z) → DIV_S_IN(X, Y, Z)
DIV_S_IN(s(X), Y, s(Z)) → U31(X, Y, Z, sub_in(X, Y, R))
DIV_S_IN(s(X), Y, s(Z)) → SUB_IN(X, Y, R)
SUB_IN(s(X), s(Y), Z) → U61(X, Y, Z, sub_in(X, Y, Z))
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
U31(X, Y, Z, sub_out(X, Y, R)) → U41(X, Y, Z, div_s_in(R, Y, Z))
U31(X, Y, Z, sub_out(X, Y, R)) → DIV_S_IN(R, Y, Z)
DIV_S_IN(s(X), Y, 0) → U21(X, Y, lss_in(X, Y))
DIV_S_IN(s(X), Y, 0) → LSS_IN(X, Y)
LSS_IN(s(X), s(Y)) → U51(X, Y, lss_in(X, Y))
LSS_IN(s(X), s(Y)) → LSS_IN(X, Y)
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
LSS_IN(s(X), s(Y)) → LSS_IN(X, Y)
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
LSS_IN(s(X), s(Y)) → LSS_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
LSS_IN(s(X), s(Y)) → LSS_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
SUB_IN(s(X), s(Y)) → SUB_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
DIV_S_IN(s(X), Y, s(Z)) → U31(X, Y, Z, sub_in(X, Y, R))
U31(X, Y, Z, sub_out(X, Y, R)) → DIV_S_IN(R, Y, Z)
div_in(X, s(Y), Z) → U1(X, Y, Z, div_s_in(X, Y, Z))
div_s_in(s(X), Y, s(Z)) → U3(X, Y, Z, sub_in(X, Y, R))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U3(X, Y, Z, sub_out(X, Y, R)) → U4(X, Y, Z, div_s_in(R, Y, Z))
div_s_in(s(X), Y, 0) → U2(X, Y, lss_in(X, Y))
lss_in(0, s(Y)) → lss_out(0, s(Y))
lss_in(s(X), s(Y)) → U5(X, Y, lss_in(X, Y))
U5(X, Y, lss_out(X, Y)) → lss_out(s(X), s(Y))
U2(X, Y, lss_out(X, Y)) → div_s_out(s(X), Y, 0)
div_s_in(0, Y, 0) → div_s_out(0, Y, 0)
U4(X, Y, Z, div_s_out(R, Y, Z)) → div_s_out(s(X), Y, s(Z))
U1(X, Y, Z, div_s_out(X, Y, Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
DIV_S_IN(s(X), Y, s(Z)) → U31(X, Y, Z, sub_in(X, Y, R))
U31(X, Y, Z, sub_out(X, Y, R)) → DIV_S_IN(R, Y, Z)
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U6(X, Y, Z, sub_in(X, Y, Z))
U6(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
DIV_S_IN(s(X), Y) → U31(Y, sub_in(X, Y))
U31(Y, sub_out(R)) → DIV_S_IN(R, Y)
sub_in(X, 0) → sub_out(X)
sub_in(s(X), s(Y)) → U6(sub_in(X, Y))
U6(sub_out(Z)) → sub_out(Z)
sub_in(x0, x1)
U6(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
DIV_S_IN(s(X), Y) → U31(Y, sub_in(X, Y))
Used ordering: Polynomial interpretation [25]:
U31(Y, sub_out(R)) → DIV_S_IN(R, Y)
POL(0) = 0
POL(DIV_S_IN(x1, x2)) = x1
POL(U31(x1, x2)) = x2
POL(U6(x1)) = x1
POL(s(x1)) = 1 + x1
POL(sub_in(x1, x2)) = x1
POL(sub_out(x1)) = x1
sub_in(X, 0) → sub_out(X)
sub_in(s(X), s(Y)) → U6(sub_in(X, Y))
U6(sub_out(Z)) → sub_out(Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
U31(Y, sub_out(R)) → DIV_S_IN(R, Y)
sub_in(X, 0) → sub_out(X)
sub_in(s(X), s(Y)) → U6(sub_in(X, Y))
U6(sub_out(Z)) → sub_out(Z)
sub_in(x0, x1)
U6(x0)